home *** CD-ROM | disk | FTP | other *** search
- /** RemAlloc.c **************************************************************/
- /* ChipAlloc(), ExtAlloc(), RemAlloc(), RemFree(). */
- /* ALLOCators which REMember the size allocated, for simpler freeing. */
- /* */
- /* Date Who Changes */
- /* --------- --- -----------------------------------------------------------*/
- /* 16-Jan-86 sss Created from DPaint/DAlloc.c */
- /* 23-Jan-86 jhm Include Compiler.h, check for size > 0 in RemAlloc. */
- /* 25-Jan-86 sss Added ChipNoClearAlloc,ExtNoClearAlloc */
- /* */
- /* By Jerry Morrison and Steve Shaw, Electronic Arts. */
- /* This software is in the public domain. */
- /* */
- /* This version for the Commodore-Amiga computer. */
- /* */
- /****************************************************************************/
- #ifndef COMPILER_H
- #include "iff/compiler.h"
- #endif
-
- #include "exec/nodes.h"
- #include "exec/memory.h"
- #include "iff/remalloc.h"
-
- /** RemAlloc ****************************************************************/
- UBYTE *RemAlloc(size,flags) LONG size, flags; {
- register LONG *p = NULL; /* (LONG *) for the sake of p++, below */
- register LONG asize = size+4;
- if (size > 0)
- p = (LONG *)AllocMem(asize,flags);
- if (p != NULL)
- *p++ = asize; /* post-bump p to point at clients area*/
- return((UBYTE *)p);
- }
-
- /** ChipAlloc ***************************************************************/
- UBYTE *ChipAlloc(size) LONG size; {
- return(RemAlloc(size, MEMF_CLEAR|MEMF_PUBLIC|MEMF_CHIP));
- }
-
- /** ChipNoClearAlloc ********************************************************/
- UBYTE *ChipNoClearAlloc(size) LONG size; {
- return(RemAlloc(size, MEMF_PUBLIC|MEMF_CHIP));
- }
-
- /** ExtAlloc ****************************************************************/
- UBYTE *ExtAlloc(size) LONG size; {
- return(RemAlloc(size, MEMF_CLEAR|MEMF_PUBLIC));
- }
-
- /** ExtNoClearAlloc *********************************************************/
- UBYTE *ExtNoClearAlloc(size) LONG size; {
- return(RemAlloc(size, MEMF_PUBLIC));
- }
-
- /** RemFree *****************************************************************/
- UBYTE *RemFree(p) UBYTE *p; {
- if (p != NULL) {
- p -= 4;
- FreeMem(p, *((LONG *)p));
- }
- return(NULL);
- }
-
-